package com.itsv.news.utils;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.text.Layout;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.widget.FrameLayout;

public class ViewArea extends FrameLayout {
	// 前面说了ViewArea是一个布�?�� �?��这里当然要继承一个布�?��。LinearLayout也可�?
	private int imgDisplayW;
	private int imgDisplayH;
	private int imgW;
	private int imgH;
	private TouchView touchView;

	// resId为图片资源id
	public ViewArea(Context context, Bitmap img) {
		// 第二个参数是图片的资源ID，当然也可以用别的方式获取图�?
		// 这种方式获取的屏幕大小和下面的方式结果是�?��的，都是480x800（i9000分辨率）
		/*
		 * dm = new DisplayMetrics();
		 * ((Activity)context).getWindowManager().getDefaultDisplay
		 * ().getMetrics(dm); imgDisplayW = dm.widthPixels; imgDisplayH =
		 * dm.heightPixels;
		 */
		super(context);

		// 这里的宽高要和xml中的LinearLayout大小�?��，如果要指定大小。xml�?LinearLayout的宽高一定要用px像素单位，因为这里的宽高是像素，用dp会有误差�?
		imgDisplayW = ((Activity) context).getWindowManager()
				.getDefaultDisplay().getWidth();
		imgDisplayH = ((Activity) context).getWindowManager()
				.getDefaultDisplay().getHeight();
		// 这句就是我们的自定义ImageView
		touchView = new TouchView(context, imgDisplayW, imgDisplayH);
		// 给我们的自定义imageView设置要显示的图片
		touchView.setImageBitmap(img);
		// Bitmap img = BitmapFactory.decodeResource(context.getResources(),
		// resId);
		imgW = img.getWidth();
		imgH = img.getHeight();
		// 图片第一次加载进来，判断图片大小从�?确定第一次图片的显示方式�?
		int layout_w = imgW > imgDisplayW ? imgDisplayW : imgW;
		int layout_h = imgH > imgDisplayH ? imgDisplayH : imgH;
		if (imgW >= imgH) {
			if (layout_w == imgDisplayW) {
				layout_h = (int) (imgH * ((float) imgDisplayW / imgW));
			}
		} else {
			if (layout_h == imgDisplayH) {
				layout_w = (int) (imgW * ((float) imgDisplayH / imgH));
			}
		}
		touchView.setLayoutParams(new FrameLayout.LayoutParams(layout_w,
				layout_h,Gravity.CENTER));

		// 这里�?��注意的是，采用FreamLayout或�?LinearLayout的好处是，如果压缩后的图片扔有一个边大于屏幕，那么只显示在屏幕内的部分，可以通过移动后看见外部（不会裁剪掉图片），如果采用RelativeLayout布局，图片会始终完整显示在屏幕内部，不会有超出屏幕的现象。如果图片不是完全占满屏幕，那么在屏幕上没有图片的地方拖动，图片也会移动，这样的体验不太好，建议用FreamLayout或�?LinearLayout�?
		// 这是自定义imageView的大小，也就是触摸范�?

		this.addView(touchView);
	}

}